﻿Imports Controle
Imports Persistencia.perConversao

Public Class frmCidade

#Region "Declaração de variáveis"
    Private objCidade As New Controle.ctrCidade
    Private objBairro As New Controle.ctrBairro
    Private objEstado As New Controle.ctrEstado
    Private iIdCidade As Int32
    Private sMensagemValidacao As String = ""
#End Region

#Region "Propriedades"

    Public Property IDCidade() As Int32
        Get
            Return Me.iIdCidade
        End Get
        Set(ByVal value As Int32)
            Me.iIdCidade = value
        End Set
    End Property

#End Region

#Region "Métodos"

    Private Sub frmEstado_alteraModo(ByVal eModoAtual As frmPadrao.eModo) Handles Me.alteraModo
        If (eModoAtual = eModo.eAguardar Or eModoAtual = eModo.eExcluir) Then
            Me.lblEstado.Enabled = False
            Me.txtEstado.Enabled = False
            Me.txtIdEstado.Enabled = False
            Me.cmdProcuraEstado.Enabled = False
            Me.lblCidade.Enabled = False
            Me.txtCidade.Enabled = False
            Me.lblCodigo.Enabled = True
            Me.txtIdCidade.Enabled = True
            Me.cmdProcura.Enabled = True
        Else
            Me.lblEstado.Enabled = True
            Me.txtEstado.Enabled = True
            Me.txtIdEstado.Enabled = True
            Me.cmdProcuraEstado.Enabled = True
            Me.lblCidade.Enabled = True
            Me.txtCidade.Enabled = True
            Me.lblCodigo.Enabled = False
            Me.txtIdCidade.Enabled = False
            Me.cmdProcura.Enabled = False
        End If
    End Sub

    Private Sub frmEstado_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.txtIdCidade.Focus()
    End Sub

    Private Sub cmdGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGravar.Click
        Dim bRetorno As Boolean
        Try
            If Me.validarFormulario Then
                bRetorno = Me.objCidade.salvar(Me.IDCidade, _
                                               Me.txtIdEstado.Text, _
                                               Me.txtCidade.Text)

                If bRetorno Then
                    Me.IDCidade = Me.objCidade.IDCidade
                    MyBase.Codigo = Me.IDCidade
                    MyBase.modoAtual = eModo.eAguardar
                    Me.txtIdCidade.Text = Me.IDCidade
                End If
            Else
                MsgBox(Me.sMensagemValidacao, MsgBoxStyle.Exclamation, Me.Text)
                Me.cmdCancelar.Text = "Cancelar"
                MyBase.modoAtual = eModo.eEditar
                Exit Sub
            End If

        Catch ex As Exception
            Me.Limpar(Me)
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub

    Private Sub cmdExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExcluir.Click
        Try
            If MyBase.Exclui Then
                If Me.objCidade.excluir(Me.txtIdCidade.Text) Then
                    MyBase.Codigo = 0
                    MyBase.Limpar(Me)
                    MyBase.modoAtual = eModo.eAguardar
                    Me.txtIdCidade.Focus()
                Else
                    MsgBox("Exclusão cancelada. Existem registros vinculados", MsgBoxStyle.Exclamation, Me.Text)
                    MyBase.modoAtual = eModo.eAguardar
                    Exit Sub
                End If
            End If
        Catch ex As Exception
            MyBase.Codigo = 0
            Me.IDCidade = 0
            MyBase.modoAtual = eModo.eAguardar
            Me.Limpar(Me)
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub

    Private Sub cmdNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNovo.Click
        Me.txtCidade.Focus()
        Me.IDCidade = MyBase.Codigo
    End Sub

    Private Sub cmdCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancelar.Click
        If Me.cmdCancelar.Text = "Alterar" Then
            Me.txtIdCidade.Focus()
        Else
            Me.txtCidade.Focus()
        End If
    End Sub

    Private Function validarFormulario() As Boolean

        Dim bRetorno As Boolean = True
        sMensagemValidacao = String.Empty

        If Me.txtCidade.Text = String.Empty Then
            sMensagemValidacao = "- Cidade obrigatória."
            bRetorno = False
        End If

        If (Me.txtIdEstado.Text = String.Empty) Then
            sMensagemValidacao &= Environment.NewLine & "- Estado obrigatório."
            bRetorno = False

        End If

        Return bRetorno

    End Function

    Private Sub carregaDados()
        Dim drDados As DataRow

        Try
            If Me.IDCidade > 0 Then
                drDados = Me.objCidade.selecionarCidade(Me.IDCidade)
                Me.txtCidade.Text = drDados.Item("Cidade")
                Me.txtEstado.Text = drDados.Item("Estado")
                Me.txtIdEstado.Text = drDados.Item("IDEstado")
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub txtIdCidade_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIdCidade.LostFocus
        Dim drDados As DataRow

        Try
            If Me.txtIdCidade.Text <> String.Empty Then
                drDados = Me.objCidade.selecionarCidade(Convert.ToInt32(Me.txtIdCidade.Text))
                If Not drDados Is Nothing Then
                    Me.txtCidade.Text = nuloParaVazio(drDados.Item("Cidade"))
                    Me.txtEstado.Text = nuloParaVazio(drDados.Item("Estado"))
                    Me.txtIdEstado.Text = nuloParaVazio(drDados.Item("IDEstado"))
                    MyBase.Codigo = drDados.Item("IDCidade")
                    Me.IDCidade = MyBase.Codigo
                    MyBase.modoAtual = eModo.eAguardar
                Else
                    MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                    Exit Sub
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub cmdProcura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcura.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa

        sql = Me.objCidade.sqlConsulta

        With frmDialogo
            .Campos = "iIDCidade,sCidade"
            .Descricoes = "Código,Descricao"
            .Larguras = "50,300"
            .Sql = sql
            .Titulo = "Pesquisa Cidade"
            .CarregaTela()
            If .DS.Tables(0).Rows.Count > 0 Then
                .ShowDialog()
                If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                    MyBase.Codigo = .Id
                    Me.IDCidade = MyBase.Codigo
                    Me.txtIdCidade.Text = Me.IDCidade
                    Me.carregaDados()
                    Me.modoAtual = eModo.eAguardar
                End If
            Else
                MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                Exit Sub
            End If

        End With
    End Sub

    Private Sub txtIdEstado_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIdEstado.LostFocus

        Try
            If Me.txtIdEstado.Text <> String.Empty Then
                Me.preencheDescricaoEstado(Me.txtIdEstado.Text)
            Else
                Me.txtEstado.Text = String.Empty
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub cmdProcuraEstado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcuraEstado.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa

        sql = Me.objEstado.sqlConsulta

        With frmDialogo
            .Campos = "iIDEstado,sEstado"
            .Descricoes = "Código,Descricao"
            .Larguras = "50,300"
            .Sql = sql
            .Titulo = "Pesquisa Estado"
            .CarregaTela()
            If .DS.Tables(0).Rows.Count > 0 Then
                .ShowDialog()
                If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                    Me.preencheDescricaoEstado(.Id)
                End If
            Else
                MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                Exit Sub
            End If
        End With
    End Sub

    Private Sub preencheDescricaoEstado(ByVal iIdEstado As Int32)

        Dim drDados As DataRow

        drDados = Me.objEstado.selecionarEstado(iIdEstado)
        If Not drDados Is Nothing Then
            Me.txtEstado.Text = nuloParaVazio(drDados.Item("Estado"))
            Me.txtIdEstado.Text = nuloParaVazio(drDados.Item("IDEstado"))
        Else
            MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
            Exit Sub
        End If

    End Sub

#End Region

End Class
